This disclosure relates generally to business process definition techniques, and more particularly to a system and method for reliably stopping and consistently removing (“undeploying”) an archive containing business process definition versions.
Business process management (BPM) systems are typically implemented as part of a generic application server platform like a JEE server or an ABAP system which may support a multitude of different content types, including user interface definitions, scripting languages, coded applications, business processes, etc. The underlying application server may, again, be part of a complex, distributed system landscape, where content distribution to the nodes of that landscape is controlled by dedicated “Lifecycle Management” software. Moreover, the application server node that provides the underlying infrastructure support of a BPM system (BPMS) may itself comprise multiple physical cluster nodes, catering for better scalability and reliability of the BPMS.
Like other content types, business processes need to support different lifecycle management operations, including deploying an archive containing multiple business process definitions (specific versions thereof, respectively). Deployment is the operation of adding content to a BPMS system (i.e., making it available for execution). Other lifecycle management operations that business process need to support include starting an instance of a specific business process definition (version), stopping the process instances that relate to the process definitions contained in a particular archive, and removing (hereafter termed “undeploying”) an archive containing business process definitions. Further adding complexity to this picture is the fact that business process definitions (unlike most other content types) are typically versioned to support long-running process instances. At runtime, a single process definition may concurrently exist in multiple different versions. While the BPMS runtime makes sure that new instances may only be started from a single active process definition version, which is typically the most recently deployed version, there may still be running process instances of multiple different versions of a single process definition at any point in time.
Conventional systems provide no way for reliably stopping and consistently removing (“undeploying”) an archive containing business process definition versions. For example, traditional application servers (e.g., JEE servers) perform content undeployment in a much more simplistic manner. That is, content (e.g., a Java application) is simply removed from the system, regardless of any running instances of that application. As a result, the system may be left in an inconsistent state, which is often unacceptable for long-running business processes which execute mission-critical business tasks/operations. Without a way to reliably undeploy an archive, the processes' entire version histories can be affected, particularly in a cluster infrastructure where multiple process instances of a single process type may be running on different cluster nodes. Another limitation is that undeployment may not be performed if currently running process instances operate on an affected process version.